home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Mac Game Programming Gurus / TricksOfTheMacGameProgrammingGurus.iso / More Source / C⁄C++ / Xconq 7.0d37 / source / mac / macconq.h < prev    next >
Encoding:
Text File  |  1995-05-02  |  31.0 KB  |  901 lines  |  [TEXT/KAHL]

  1. /* Definitions for the Mac interface to Xconq.
  2.    Copyright (C) 1992, 1993, 1994, 1995 Stanley T. Shebs.
  3.  
  4. Xconq is free software; you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation; either version 2, or (at your option)
  7. any later version.  See the file COPYING.  */
  8.  
  9. #undef USE_CMDLINE
  10. #undef USE_CONSOLE
  11.  
  12. #ifdef THINK_C
  13. #include <MacHeaders>
  14. #include <Sound.h>
  15. #endif /* THINK_C */
  16.  
  17. #ifndef THINK_C /* assume MPW */
  18. #include <Values.h>
  19. #include <Types.h>
  20. #include <Resources.h>
  21. #include <QuickDraw.h>
  22. #include <Fonts.h>
  23. #include <Events.h>
  24. #include <Windows.h>
  25. #include <Menus.h>
  26. #include <TextEdit.h>
  27. #include <Dialogs.h>
  28. #include <Desk.h>
  29. #include <ToolUtils.h>
  30. #include <Memory.h>
  31. #include <SegLoad.h>
  32. #include <Files.h>
  33. #include <Folders.h>
  34. #include <OSUtils.h>
  35. #include <OSEvents.h>
  36. #include <DiskInit.h>
  37. #include <Packages.h>
  38. #include <Traps.h>
  39. #include <Lists.h>
  40. #include <StandardFile.h>
  41. #include <Sound.h>
  42. #endif
  43.  
  44. #include <GestaltEqu.h>
  45. #include <PPCToolbox.h>
  46. #include <AppleEvents.h>
  47.  
  48. #include "imf.h"
  49. #include "macimf.h"
  50. #include "ui.h"
  51.  
  52. #include "macdefs.h"
  53.  
  54. #ifdef MPW
  55. #define QD(whatever) (qd.##whatever)
  56. #define QDPat(whatever) (&(qd.##whatever))
  57. #endif
  58. #ifdef THINK_C
  59. #define QD(whatever) (whatever)
  60. #define QDPat(whatever) (whatever)
  61. #endif
  62.  
  63. #ifdef THINK_C
  64. /* From MPW, to replace missing definitions in Think C includes. */
  65. enum {
  66.  
  67.  kOnSystemDisk = /* 0x8000 */ -32768
  68.  
  69.  
  70. #define kCreateFolder true
  71. #define kDontCreateFolder false
  72.  
  73. #define kSystemFolderType                'macs'        /* the system folder */
  74. #define kDesktopFolderType                'desk'        /* the desktop folder; objects in this folder show on the desk top. */
  75. #define kTrashFolderType                'trsh'        /* the trash folder; objects in this folder show up in the trash */
  76. #define kWhereToEmptyTrashFolderType    'empt'        /* the "empty trash" folder; Finder starts empty from here down */
  77.  
  78. #define kPrintMonitorDocsFolderType        'prnt'        /* Print Monitor documents */
  79.  
  80. #define kStartupFolderType                'strt'        /* Finder objects (applications, documents, DAs, aliases, to...) to open at startup go here */
  81. #define kAppleMenuFolderType            'amnu'        /* Finder objects to put into the Apple menu go here */
  82. #define kControlPanelFolderType         'ctrl'        /* Control Panels go here (may contain INITs) */
  83. #define kExtensionFolderType            'extn'        /* Finder extensions go here */
  84. #define    kFontsFolderType                'font'        /* Fonts go here */
  85. #define kPreferencesFolderType            'pref'        /* preferences for applications go here */
  86. #define kTemporaryFolderType            'temp'        /* temporary files go here (deleted periodically, but don't rely on it.) */
  87. };
  88.  
  89. pascal OSErr FindFolder(short vRefNum,OSType folderType,Boolean createFolder,
  90.  short *foundVRefNum,long *foundDirID)
  91.  = {0x7000,0xA823}; 
  92. #endif
  93.  
  94. enum grays {
  95.     blackgray,
  96.     darkgray,
  97.     mediumgray,
  98.     lightgray,
  99.     whitegray,
  100.     fullcolor
  101. };
  102.  
  103. /* The types of available designer tools. */
  104.  
  105. enum tooltype {
  106.     notool,
  107.     terraintool,
  108.     unittool,
  109.     peopletool,
  110.     featuretool,
  111.     brushsizetool,
  112.  
  113.     materialtool,
  114.     elevationtool,
  115.     temperaturetool,
  116.     cloudstool,
  117.     windstool,
  118.     viewtool
  119. };
  120.  
  121. /* The user interface substructure.  This is only allocated for sides with
  122.    attached displays. */
  123.  
  124. typedef struct a_ui {
  125.     short followaction;       /* move to where a change has occured */
  126.     int itertime;
  127.     int active;
  128. } UI;
  129.  
  130. /* Each side can open up any number and shape of maps. */
  131.  
  132. #define MAXSELECTIONS 500
  133.  
  134. typedef struct a_map {
  135.     VP *vp;                 /* This map's generic view parameters */
  136.     short osx, osy;         /* Tracks shifted origin so can be restored */
  137.     WindowPtr window;
  138.     ControlHandle hscrollbar;
  139.     ControlHandle vscrollbar;
  140.     /* How to draw the map. */
  141.     short conw;
  142.     short toph;
  143.     short drawterrain;        /* Display solid color terrain on the map? */
  144.     short auxterraintypes[MAXTTYPES];
  145.     short drawauxterrain[MAXTTYPES];
  146.     short drawgrid;            /* Draw outlines around cells? */
  147.     short drawcellpats;        /* Draw terrain patterns? */
  148.     short drawothermaps;    /* Draw outlines of other maps? */
  149.     short drawunits;        /* Draw units on the map? */
  150.     short drawnames;        /* Draw unit names/numbers on the map? */
  151.     short oldesttoshow;        /* the relative time of the oldest data */
  152.     short agetofade;        /* point at which to gray out the display */
  153.     short newesttoshow;        /* the relative time of the newest data */
  154.     short fadeterrain;        /* fade world features as well as units? */
  155.     short lowestaltitude;   /* the lowest altitude of units to display */
  156.     short highestaltitude;    /* the highest altitude of units to display */
  157.     short drawborders;
  158.     short drawconnections;
  159.     short drawpeople;        /* Draw people sides on the map? */
  160.     short drawelevations;    /* Draw elevations on the map? */
  161.     short drawmaterials[MAXMTYPES];
  162.     short nummaterialstodraw;
  163.     short drawlighting;        /* Draw day/night on the map? */
  164.     short drawtemperature;    /* Draw temperatures on the map? */
  165.     short drawwinds;
  166.     short drawclouds;
  167.     short drawstorms;
  168.     short drawplans;
  169.     short drawai;
  170.     short drawcover;
  171.     short autoselect;
  172.     Unit *curunit;
  173.     short moveonclick;
  174.     short scrolltocurunit;
  175.     int numselections;
  176.     int maxselections;
  177.     Unit **selections;
  178.     Rect contentrect;
  179.     RgnHandle cellrgn;
  180.     int cellrgnx, cellrgny;
  181.     int maxdepth;           /* Largest # of bits/pixel of screens this map uses */
  182.     struct a_map *next;        /* Link to the next map. */
  183. } Map;
  184.  
  185. /* Each side can open up any number of lists of units. */
  186.  
  187. #define MAXINLIST 500
  188.  
  189. typedef struct a_list {
  190. #if (MAXSIDES < 32)
  191.     long sides;                      /* mask of sides to display the units of */
  192. #else
  193.     short sides[MAXSIDES];
  194. #endif
  195.     int mainsortmi;
  196.     int listglimpsed;              /* list glimpsed units also? */
  197.     enum sortkeys sortkeys[MAXSORTKEYS];  /* attributes to sort list elements on */
  198.     UnitVector *contents;
  199.     int numunits;
  200.     int firstvisible;
  201.     int lastvisible;
  202.     int firstvisfield;
  203.     int lastvisfield;
  204.     int largeicons;
  205.     int shouldreorg;
  206.     int entryspacing;
  207.     WindowPtr window;
  208.     ControlHandle hscrollbar;
  209.     ControlHandle vscrollbar;
  210.     struct a_list *next;
  211. } List;
  212.  
  213. /* A closer look at a unit. */
  214.  
  215. typedef struct a_unit_closeup {
  216.     struct a_unit *unit;
  217.     WindowPtr window;
  218.     struct a_unit_closeup *next;
  219. } UnitCloseup;
  220.  
  221. /* Iteration over all of a side's maps. */
  222.  
  223. #define for_all_maps(m)  \
  224.   for ((m) = maplist; (m) != NULL; (m) = (m)->next)
  225.  
  226. /* Iteration over all of a side's lists. */
  227.  
  228. #define for_all_lists(l)  \
  229.   for ((l) = listlist; (l) != NULL; (l) = (l)->next)
  230.  
  231. /* Iteration over all of a side's unit closeups. */
  232.  
  233. #define for_all_unit_closeups(c)  \
  234.   for ((c) = unitcloseuplist; (c) != NULL; (c) = (c)->next)
  235.  
  236. /* Other useful macros. */
  237.  
  238. #define window_width(w) ((w)->portRect.right - (w)->portRect.left)
  239. #define window_height(w) ((w)->portRect.bottom - (w)->portRect.top)
  240.  
  241. #define clip_to_limits(lo,x,hi) (max((lo), min((x), (hi))))
  242.  
  243. /* following macros should all go to ui.h (but pass side as arg) */
  244.  
  245. #define partial_views() (!(g_see_all() || dside->designer || weseeall))
  246.  
  247. #define all_terrain_visible()  \
  248.   (seeall || terrainseen || dside->designer || weseeall)
  249.  
  250. #define terrain_visible(xw, y)  \
  251.   (seeallterrain || terrain_view(dside, xw, y) != UNSEEN)
  252.  
  253. #define units_visible(x, y)  \
  254.   (seeall || dside->designer || weseeall || cover(dside, wrap(x), y) >= 1)
  255.  
  256. #define borders_visible(x, y, d)  \
  257.   (seeall || dside->designer || weseeall || seen_border(dside, x, y, d))
  258.  
  259. #define bords_to_draw(m) (numbordtypes > 0 && bwid[(m)->vp->power] > 0)
  260.  
  261. #define conns_to_draw(m) (numconntypes > 0 && cwid[(m)->vp->power] > 0)
  262.  
  263. #define draw_any_materials(m) (0)
  264.  
  265. #define any_borders_at(x, y, b) (aux_terrain_at(x, y, b) != 0)
  266.  
  267. #define any_connections_at(x, y, c) (aux_terrain_at(x, y, c) != 0)
  268.  
  269. enum {
  270.     dontdraw,
  271.     useblocks,
  272.     usepictures,
  273.     usepolygons
  274. };
  275.  
  276. enum {
  277.     plain_emblem,
  278.     shadow_emblem
  279. };
  280.  
  281. #define NO_MODAL 0
  282. #define ZOOM_MODAL 1
  283. #define FIRE_MODAL 2
  284. #define FIRE_INTO_MODAL 3
  285.  
  286. #ifndef c2p
  287. #define c2p(STR,PBUF) \
  288.   strcpy(((char *) PBUF) + 1, STR);  \
  289.   PBUF[0] = strlen(STR);
  290. #endif
  291.  
  292. #ifndef p2c
  293. #define p2c(PSTR,BUF)  \
  294.   strncpy(BUF, ((char *) (PSTR) + 1), PSTR[0]);  \
  295.   BUF[PSTR[0]] = '\0';
  296. #endif
  297.  
  298. #define top_left(rect) (*(Point *) &(rect.top))
  299.  
  300. #define bottom_right(rect) (*(Point *) &(rect.bottom))
  301.  
  302. #define set_flag_from_ditem(di,place)  \
  303.   GetDItem(win, (di), &itemtype, &itemhandle, &itemrect);  \
  304.   (place) = GetCtlValue((ControlHandle) itemhandle); 
  305.  
  306. #define put_number_into_ditem(di,num)  \
  307.   GetDItem(win, (di), &itemtype, &itemhandle, &itemrect);  \
  308.   NumToString((num), tmpstr);  \
  309.   SetIText(itemhandle, tmpstr);
  310.  
  311. #define get_number_from_ditem(di,place)  \
  312.   GetDItem(win, (di), &itemtype, &itemhandle, &itemrect);  \
  313.   GetIText(itemhandle, tmpstr);  \
  314.   StringToNum(tmpstr, (long *) &(place));
  315.  
  316. /* (should understand nn:mm times) */
  317.  
  318. #define put_time_into_ditem(di,num)  \
  319.   GetDItem(win, (di), &itemtype, &itemhandle, &itemrect);  \
  320.   NumToString((num), tmpstr);  \
  321.   SetIText(itemhandle, tmpstr);
  322.  
  323. #define get_time_from_ditem(di,place)  \
  324.   GetDItem(win, (di), &itemtype, &itemhandle, &itemrect);  \
  325.   GetIText(itemhandle, tmpstr);  \
  326.   StringToNum(tmpstr, (long *) &(place));
  327.  
  328. #define get_string_from_ditem(di,buf)  \
  329.   GetDItem(win, (di), &itemtype, &itemhandle, &itemrect);  \
  330.   GetIText(itemhandle, tmpstr);  \
  331.   p2c(tmpstr, (buf));
  332.  
  333. extern Side *dside;
  334.  
  335. extern int playsounds;
  336.  
  337. extern int nummaps;
  338.  
  339. extern ImageFamily **uimages;
  340. extern ImageFamily **timages;
  341. extern ImageFamily **eimages;
  342.  
  343. extern ImageColor **tcolors;
  344.  
  345. extern WindowPtr helpwin;
  346. extern struct a_helpnode *curhelpnode;
  347. extern char *helpstring;
  348. extern TEHandle helptext;
  349.  
  350. extern WindowPtr instructionswin;
  351.  
  352. extern WindowPtr gamewin;
  353. extern ControlHandle gamevscrollbar;
  354.  
  355. extern WindowPtr constructionwin;
  356. extern ListHandle constructionunitlist;
  357. extern ListHandle constructiontypelist;
  358.  
  359. extern WindowPtr designwin;
  360. extern enum tooltype tooltype;
  361. extern short curutype;
  362. extern short curttype;
  363. extern short cursidenumber;
  364. extern short curfid;
  365. extern Feature *curfeature;
  366.  
  367. extern WindowPtr historywin;
  368.  
  369. extern MenuHandle sidemenu;
  370. extern MenuHandle utypemenu;
  371. extern MenuHandle mtypemenu;
  372. extern MenuHandle ttypemenu;
  373.  
  374. extern int hasColorQD;
  375.  
  376. extern int minscreendepth;
  377. extern int maxscreendepth;
  378.  
  379. extern int sbarwid;
  380.  
  381. extern WindowPtr *winmenuwins;
  382.  
  383. extern int default_draw_grid;           /* Display grid on the map? */
  384. extern int default_draw_names;           /* Display unit names/numbers on the map? */
  385.  
  386. extern int map_modal;
  387.  
  388. extern int defaultmoveonclick;
  389. extern int defaultautoselect;
  390.  
  391. extern PolyHandle polygons[];
  392. extern int lastpolyx[], lastpolyy[];
  393. extern PolyHandle gridpolygons[];
  394. extern int lastgridpolyx[], lastgridpolyy[];
  395.  
  396. extern RgnHandle cellrgns[];
  397. extern int lastcellrgnx[], lastcellrgny[];
  398. extern RgnHandle gridcellrgns[];
  399. extern int lastgridcellrgnx[], lastgridcellrgny[];
  400.  
  401. extern RgnHandle cellrgns30[];
  402. extern int lastcellrgnx30[], lastcellrgny30[];
  403. extern RgnHandle gridcellrgns30[];
  404. extern int lastgridcellrgnx30[], lastgridcellrgny30[];
  405.  
  406. extern RgnHandle cellrgns15[];
  407. extern int lastcellrgnx15[], lastcellrgny15[];
  408. extern RgnHandle gridcellrgns15[];
  409. extern int lastgridcellrgnx15[], lastgridcellrgny15[];
  410.  
  411. extern struct a_map *maplist;       /* chain of maps that we're using */
  412. extern struct a_list *listlist;     /* chain of lists */
  413. extern struct a_unit_closeup *unitcloseuplist;     /* chain of unit closeups */
  414.  
  415. extern CursHandle paintcursors[];
  416.  
  417. extern CursHandle cellpaintor;
  418. extern CursHandle bordpaintor;
  419. extern CursHandle connpaintor;
  420. extern CursHandle unitpaintor;
  421. extern CursHandle peoplepaintor;
  422. extern CursHandle featurepaintor;
  423. extern CursHandle materialpaintor;
  424. extern CursHandle elevpaintor;
  425. extern CursHandle cloudpaintor;
  426. extern CursHandle temppaintor;
  427.  
  428. extern CursHandle movecursors[];
  429. extern CursHandle nomovecursor;
  430. extern CursHandle allmovecursor;
  431. extern CursHandle grayarrowcursor;
  432. extern CursHandle opencrosscursor;
  433. extern CursHandle watchcursor;
  434. extern CursHandle firecursor;
  435.  
  436. extern char *curdatestr;
  437.  
  438. extern int mayseeall;
  439.  
  440. extern int weseeall;
  441.  
  442. extern RGBColor graycolor, blackcolor;
  443.  
  444. extern enum grays gridgray;
  445. extern enum grays unseengray;
  446. extern enum grays bggray;
  447.  
  448. extern RGBColor gridcolor;
  449. extern RGBColor unseencolor;
  450. extern RGBColor blackcolor;
  451.  
  452. extern int conwid, tophgt;
  453.  
  454. extern int first_windows;
  455.  
  456. extern int daynight;
  457. extern int grid_matches_unseen;
  458.  
  459. extern int seeallterrain;
  460.  
  461. extern BitMap *bordbitmaps;
  462. extern BitMap *connbitmaps;
  463.  
  464. extern int animation_pattern_state;
  465.  
  466. /* Function declarations. */
  467.  
  468. /* Note that although the Xconq kernel must conditionalize its prototypes,
  469.    all Mac C compilers are sufficiently standard C to handle them. */
  470.  
  471. extern int main(void);
  472. extern int splash_dialog(void);
  473. extern void connect_game_dialog(void);
  474. extern void init_toolbox(void);
  475. extern void recalc_depths(void);
  476. extern void init_rects(void);
  477. extern void init_ae(void);
  478. extern void get_files(void);
  479. extern int open_preferences(void);
  480. extern void close_preferences(void);
  481. extern void get_preferences(void);
  482. extern void save_preferences(void);
  483. extern void event_loop(void);
  484. extern void get_global_mouse(Point *mouse);
  485. extern void adjust_cursor(Point mouse, RgnHandle region);
  486. extern int handle_event(EventRecord *event);
  487. extern void grow_window(WindowPtr win, Point where);
  488. extern void zoom_window(WindowPtr win, Point where, int part);
  489. extern void close_window(WindowPtr win);
  490. extern void do_mouse_down(WindowPtr window, EventRecord *event);
  491. extern void activate_window(WindowPtr win, int activate);
  492. extern void update_window(WindowPtr win);
  493. extern void maybe_select_next_unit(void);
  494.  
  495. extern int is_da_window(WindowPtr win);
  496. extern int is_app_window(WindowPtr win);
  497.  
  498. extern void won_game_dialog(void);
  499. extern void lost_game_dialog(void);
  500. extern void game_over_dialog(void);
  501.  
  502. extern int position_on_screen(int h, int v);
  503. extern int position_already_used(int h, int v);
  504. extern GDHandle best_zoom_screen(Rect *rectptr);
  505.  
  506. extern GDHandle best_zoom_screen(Rect *rectptr);
  507.  
  508. extern void force_update(WindowPtr win);
  509. extern void force_overall_update(void);
  510.  
  511. extern void draw_default_button(DialogPtr dialog, short ditem);
  512.  
  513. extern void stagger_window(WindowPtr win, int *lasthp, int *lastvp);
  514.  
  515. extern void set_end_of_game_interaction_modes(void);
  516. extern void draw_selection_animation(Map *map, Unit *unit);
  517.  
  518. /* Map-handling prototypes. */
  519.  
  520. extern int at_all_visible(Map *map, int x, int y);
  521. extern int in_middle(Map *map, int x, int y);
  522.  
  523. extern void xform(Map *map, int x, int y, int *sxp, int *syp);
  524. extern void m_xform_unit(Map *map, Unit *unit, int *sxp, int *syp, int *swp, int *shp);
  525. extern void m_xform_unit_self(Map *map, Unit *unit, int *sxp, int *syp, int *swp, int *shp);
  526. extern void m_xform_occupant(Map *map, Unit *transport, Unit *unit, int sx, int sy, int sw, int sh, int *sxp, int *syp, int *swp, int *shp);
  527.  
  528. extern Map *create_map(int power);
  529. extern void calc_vision(void);
  530. extern void set_content_rect(Map *map);
  531. extern void m_focus_on_center(Map *map);
  532. extern void m_center_on_focus(Map *map);
  533. extern void set_map_scrollbars(Map *map);
  534. extern void set_map_power(Map *map, int power);
  535. extern void make_cell_clip(int power);
  536. extern Map *map_from_window(WindowPtr window);
  537.  
  538. extern void grow_map(Map *map, int w, int h);
  539. extern void zoom_map(Map *map, int part);
  540.  
  541. extern void set_standard_state(WindowPtr win, int fullw, int fullh);
  542.  
  543. extern void adjust_map_decor(Map *map);
  544.  
  545. extern int m_nearest_cell(Map *map, int sx, int sy, int *xp, int *yp);
  546. extern int m_nearest_boundary(Map *map, int sx, int sy, int *xp, int *yp, int *dirp);
  547. extern int m_nearest_unit(Map *map, int sx, int sy, Unit **unitp);
  548.  
  549. extern void draw_map(Map *map);
  550. extern void draw_window_background(Map *map);
  551. extern void draw_map_content(Map *map);
  552. extern void draw_area_background(Map *map);
  553. extern void draw_control_panel(Map *map);
  554. extern void draw_top_line(Map *map);
  555. extern void draw_other_maps(Map *map);
  556. extern void draw_related_maps(Map *map);
  557. extern void draw_other_map(Map *map, Map *map2);
  558. extern void draw_row(Map *map, int x0, int y0, int len, int clearit);
  559. extern int cell_update(Map *map, int x, int y);
  560. extern void draw_terrain_row(Map *map, int x0, int y0, int len);
  561. extern void draw_borders(Map *map, int x, int y, int b);
  562. extern void draw_connections(Map *map, int x, int y, int c);
  563. extern void draw_units(Map *map, int x, int y);
  564. extern void draw_unit_and_occs(Map *map, Unit *unit, int sx, int sy, int sw, int sh);
  565. extern void draw_people_row(Map *map, int x0, int y0, int len);
  566. extern void draw_materials(Map *map, int x, int y);
  567. extern void draw_theater(Map *map, int x, int y);
  568. extern void draw_legend(Map *map, int x, int y);
  569.  
  570. extern void draw_selections(Map *map);
  571. extern void draw_selections_at(Map *map, int x, int y);
  572. extern void draw_selected_unit_setport(Map *map, Unit *unit);
  573. extern void draw_selected_unit(Map *map, Unit *unit);
  574. extern void erase_selections(Map *map);
  575. extern void erase_selection(Map *map, Unit *unit);
  576. extern void draw_unselected_unit(Map *map, Unit *unit);
  577.  
  578. extern void force_map_update(Map *map);
  579. extern void destroy_map(Map *map);
  580. extern void activate_map(Map *map, int activate);
  581. extern void print_map(Map *map);
  582. extern void oneliner(Map *map, int sx, int sy);
  583.  
  584. extern void draw_unit_image(WindowPtr win, int sx, int sy, int sw, int sh, int u, int e, int mod);
  585. extern void draw_side_emblem(WindowPtr win, int ex, int ey, int ew, int eh, int e, int style);
  586. extern void draw_cell_block(int sx, int sy, int n, int power, int t, int t2, int angle);
  587. extern void calc_best_terrain_images(void);
  588. extern void draw_hex_region(int sx, int sy, int power, int dogrid, int t, int t2, int angle);
  589. extern void draw_border_line_multiple(WindowPtr win, int sx, int sy, int bitmask, int power, int t, int angle);
  590. extern void draw_connection_line_multiple(WindowPtr win, int sx, int sy, int bitmask, int power, int t, int angle);
  591. extern void draw_terrain_sample(Rect tmprect, int t);
  592. extern void draw_country_borders(WindowPtr win, int sx, int sy, int bitmask, int power, int shade, int angle);
  593. extern void draw_theater_borders(WindowPtr win, int sx, int sy, int bitmask, int power);
  594. extern int draw_elevation_here(int x, int y);
  595. extern void draw_elevation(int sx, int sy, int power, int elev);
  596. extern int draw_temperature_here(int x, int y);
  597. extern void draw_temperature(int sx, int sy, int power, int temp);
  598. extern int draw_winds_here(int x, int y);
  599. extern void draw_winds(int sx, int sy, int power, int wdir, int wforce);
  600. extern int draw_clouds_here(int x, int y);
  601. extern void draw_clouds(int sx, int sy, int power, int cloudtype);
  602. extern void draw_coverage(int sx, int sy, int power, int cov);
  603. extern void draw_unit_name(Unit *unit, int sx, int sy, int sw, int sh);
  604. extern void draw_legend_text(int sx, int sy, int sh, char *legend, int just);
  605. extern void draw_blast_image(WindowPtr win, int sx, int sy, int sw, int sh, int blasttype);
  606. extern void clear_blast_image(WindowPtr win, int sx, int sy, int sw, int sh, int blasttype);
  607. extern int picture_width(PicHandle pichandle);
  608. extern int picture_height(PicHandle pichandle);
  609. extern void plot_sicn(WindowPtr win, int sx, int sy, Handle sicnhandle, int n, int erase, int mode);
  610. extern void gray_out_rect(Rect *rectptr);
  611.  
  612. extern pascal void map_scroll_proc(ControlHandle control, short code);
  613. extern void do_mouse_down_map(Map *map, Point mouse, int mods);
  614. extern void do_mouse_down_map_control_panel(Map *map, int h, int v, int mods);
  615. extern void toggle_survey(Map *map);
  616. extern void magnify_map(Map *map, int inout);
  617. extern void set_map_mag(Map *map, int newpower);
  618. extern void toggle_map_grid(Map *map);
  619. extern void toggle_map_topline(Map *map);
  620. extern void toggle_map_other_maps(Map *map);
  621. extern void toggle_map_lighting(Map *map);
  622. extern void toggle_map_coverage(Map *map);
  623. extern void toggle_map_names(Map *map);
  624. extern void toggle_map_people(Map *map);
  625. extern void toggle_map_elevations(Map *map);
  626. extern void toggle_map_materials(Map *map, int m);
  627. extern void toggle_map_aux_terrain(Map *map, int t);
  628. extern void toggle_map_temperature(Map *map);
  629. extern void toggle_map_winds(Map *map);
  630. extern void toggle_map_clouds(Map *map);
  631. extern void toggle_map_storms(Map *map);
  632. extern void toggle_map_plans(Map *map);
  633. extern void toggle_map_ai(Map *map);
  634. extern void do_mouse_down_map_content(Map *map, int h, int v, int mods);
  635. extern void select_all_dragged_over(Map *map, int h0, int v0, int mods);
  636. extern void select_area_and_zoom(Map *map, int h0, int v0, int mods);
  637. extern void move_on_drag(Map *map, Unit *unit, int mods);
  638. extern void unselect_all(Map *map);
  639. extern void select_unit_on_map(Map *map, Unit *unit);
  640. extern int unit_is_selected(Map *map, Unit *unit);
  641. extern void unselect_unit_on_map(Map *map, Unit *unit);
  642. extern void select_all_units_in_rect(Map *map, Rect *rectptr);
  643. extern int move_the_selected_unit(Map *map, Unit *unit, int h, int v);
  644. extern void fire_the_selected_unit(Map *map, Unit *unit, int h, int v);
  645. extern void select_exactly_one_unit(Map *map, Unit *unit);
  646. extern void select_next_unit(Map *map);
  647. extern void select_previous_unit(Map *map);
  648. extern void select_next_actor(Map *map);
  649. extern void select_previous_actor(Map *map);
  650. extern void select_next_mover(Map *map);
  651. extern void select_previous_mover(Map *map);
  652. extern void select_next_awake_mover(Map *map);
  653. extern void select_previous_awake_mover(Map *map);
  654. extern void select_another(Map *map, Unit *(*fn)(Side *side, Unit *unit));
  655. extern void scroll_best_map_to_unit(Unit *unit);
  656. extern void scroll_to_unit(Map *map, Unit *unit);
  657. extern void magnify_to_fit(Map *map, int x1, int y1, int x2, int y2);
  658.  
  659. extern void create_list(void);
  660. extern void init_list_contents(List *list);
  661. extern void organize_list_contents(List *list);
  662. extern void sort_list_contents(List *list);
  663. extern void add_unit_to_list(List *list, Unit *unit);
  664. extern void set_list_scrollbars(List *list);
  665. extern List *list_from_window(WindowPtr window);
  666. extern void draw_list(List *list);
  667. extern void draw_list_contents(List *list);
  668. extern void draw_list_headings(List *list);
  669. extern void draw_unit_list_entry(List *list, int n, int clearfirst);
  670. extern void grow_list(List *list, int w, int h);
  671. extern void zoom_list(List *list, int part);
  672. extern void adjust_list_decor(List *list);
  673. extern pascal void list_vscroll_proc(ControlHandle control, short code);
  674. extern pascal void list_hscroll_proc(ControlHandle control, short code);
  675. extern void do_mouse_down_list(List *list, Point mouse, int mods);
  676. extern void set_list_sorting(List *list, enum sortkeys newkey, int mi);
  677. extern void toggle_list_large_icons(List *list);
  678. extern void update_unit_in_lists(Unit *unit);
  679. extern int unit_position_in_list(List *list, Unit *unit);
  680. extern void reorganize_list(List *list);
  681. extern void redraw_unit_list_entry(List *list, int n);
  682. extern void clear_selections(List *list);
  683. extern Unit *selected_unit_in_list(List *list);
  684. extern void scroll_to_selected_unit_in_list(List *list);
  685. extern void activate_list(List *list, int activate);
  686. extern void print_list(List *list);
  687. extern void destroy_list(List *list);
  688.  
  689. extern void scroll_best_map_to_unit(Unit *unit);
  690.  
  691. extern void init_patterns(void);
  692. extern void init_icons(void);
  693. extern void init_cursors(void);
  694. pascal Boolean filter_splash(DialogPtr dialog, EventRecord *evt, short *itemhit);
  695. extern int do_splash_box(void);
  696. extern void new_game_dialog(void);
  697. extern int start_new_game(void);
  698. extern void update_new_game_list(void);
  699. extern int variants_dialog(void);
  700. extern int open_game_dialog(void);
  701. extern int open_game_from_fsspec(FSSpec *fsspec);
  702. extern int open_game_from_name_and_volume(Str255 name, int vrefnum);
  703. extern int launch_game(void);
  704. extern void handle_player_setup_event(EventRecord *event);
  705. extern int hit_player_setup_dialog(int itemhit, Point mouse);
  706. extern void launch_game_2(void);
  707. extern void add_remote_player(char *name);
  708. extern void check_for_missing_images(void);
  709. extern void announce_read_progress(void);
  710. extern pascal void draw_progress(WindowPtr win, short ditem);
  711. extern void open_progress_dialog(void);
  712. extern void announce_lengthy_process(char *msg);
  713. extern void announce_progress(int pctdone);
  714. extern void finish_lengthy_process(void);
  715. extern void close_progress_dialog(void);
  716. extern Player *add_default_player(void);
  717. extern void init_ui(Side *side);
  718. extern void init_display(void);
  719. extern void init_terrain_images(void);
  720. extern void interp_named_color(char *name, enum grays *grayvar, RGBColor *colorvar);
  721. extern void init_terrain_colors(void);
  722. extern void init_unit_images(void);
  723. extern void init_all_emblem_images(void);
  724. extern void init_emblem_images(Side *side2);
  725.  
  726. extern int construction_ever_possible(void);
  727.  
  728. extern void init_menus(void);
  729. extern void add_window_menu_item(char *name, WindowPtr win);
  730. extern void remove_window_menu_item(WindowPtr win);
  731. extern void build_side_menu(void);
  732. extern void update_side_menu(Side *side2);
  733. extern void build_unit_type_menu(void);
  734. extern void build_material_type_menu(void);
  735. extern void build_terrain_type_menu(void);
  736. extern void build_ai_type_menu(void);
  737. extern void build_feature_menu(void);
  738. extern void build_optional_terrain_type_menu(void);
  739. extern void update_feature_menu(Feature *feature);
  740. extern void do_menu_command(long which);
  741. extern void do_about_box(void);
  742. extern void save_the_game(int askname, int quitting);
  743. extern void set_preferences(void);
  744. extern void maybe_init_print(void);
  745. extern void do_page_setup_mi(void);
  746. extern void do_print_mi(void);
  747. extern void quit_the_game(void);
  748. extern void do_select_all_mi(void);
  749. extern void do_find_previous_mi(void);
  750. extern void do_find_next_mi(void);
  751. extern void do_find_location_mi(void);
  752. extern void do_find_unit_by_name_mi(void);
  753. extern void do_find_selected_mi(void);
  754. extern void apply_to_all_selected(int (*fn)(), int beepfailure);
  755. extern void do_closeup_mi(void);
  756. extern void do_move_mi(void);
  757. extern void do_patrol_mi(void);
  758. extern void do_wake_mi(void);
  759. extern void do_sleep_mi(void);
  760. extern void do_done_moving_mi(void);
  761. extern void do_reserve_command(int value, int recurse);
  762. extern void do_sleep_command(int value, int recurse);
  763. extern void do_ai_control_command(void);
  764. extern void do_construction_mi(void);
  765. extern void enable_construction(void);
  766. extern void do_repair_mi(void);
  767. extern void do_attack_mi(void);
  768. extern void do_attack_command(void);
  769. extern void do_overrun_mi(void);
  770. extern void do_fire_mi(void);
  771. extern int do_fire_command(void);
  772. extern void do_fire_into_mi(void);
  773. extern int do_fire_into_command(void);
  774. extern void do_take_mi(void);
  775. extern void do_profile(void);
  776. extern void do_trace(void);
  777. extern void do_detonate_mi(void);
  778. extern void do_detonate_command(void);
  779. extern void do_give_unit_mi(int mi);
  780. extern void do_disband_mi(void);
  781. extern void moveonclick_mi(void);
  782. extern void autoselect_mi(void);
  783. extern void adjust_menu_item(MenuHandle menu, int item, int value);
  784. extern void adjust_menus(void);
  785. extern void enable_commands_for_unit(MenuHandle menu, Unit *unit);
  786.  
  787. extern int add_unit_position(Unit *unit);
  788. extern void set_focus(Map *map, int x, int y);
  789. extern void message_dialog(void);
  790. extern void command_dialog(void);
  791. extern void do_keyboard_command(int key);
  792. extern void execute_named_command(char *cmdstr);
  793. extern void describe_commands(int arg, char *key, char *buf);
  794. struct cmdtab;
  795. extern void describe_command_table(int arg, char *key, char *buf, struct cmdtab *cmdtab);
  796. extern void update_debugging(void);
  797. extern void toggle_debugging(int *flagp);
  798.  
  799. extern char *get_string_from_item(Handle itemhandle);
  800.  
  801. extern pascal void draw_instructions_text(WindowPtr win, short ditem);
  802. extern void instructions_dialog(void);
  803. extern void create_instructions_dialog(void);
  804. extern int hit_instructions_dialog(DialogPtr dialog, int itemhit, EventRecord *evt);
  805.  
  806. extern void create_game_window(void);
  807. extern void draw_game(void);
  808. extern void draw_game_date(void);
  809. extern void draw_game_clocks(void);
  810. extern void draw_game_progress(void);
  811. extern void draw_game_side(Side *side2);
  812. extern int feeling_towards(Side *side, Side *side2);
  813. extern void draw_side_status(Side *side2);
  814. extern void do_mouse_down_game(Point mouse, int mods);
  815.  
  816. extern void create_construction_window(void);
  817. extern void init_construction_lists(void);
  818. extern void reinit_construction_lists(void);
  819. extern void draw_construction(void);
  820. extern void draw_construction_default(void);
  821. extern void calc_construction_rects(void);
  822. extern void activate_construction(int activate);
  823. extern Unit *get_selected_construction_unit(void);
  824. extern int get_selected_construction_type(void);
  825. extern void scroll_to_selected_construction_unit(void);
  826. extern void do_mouse_down_construction(Point mouse, int mods);
  827. extern void select_unit_in_construction_window(Unit *unit);
  828. extern void select_type_in_construction_window(int u);
  829. extern void update_construction_unit_list(Unit *unit);
  830. extern void maybe_add_unit_to_construction_list(Unit *unit);
  831. extern void update_unit_list_for_type(int u);
  832. extern void update_construction_type_list(void);
  833. extern void update_type_list_for_unit(Unit *unit);
  834. extern void adjust_construction_controls(void);
  835. extern void grow_construction(int h, int v);
  836. extern void zoom_construction(int part);
  837.  
  838. extern void side_rename_dialog(Side *side);
  839.  
  840. extern int unit_rename_dialog(Unit *unit);
  841.  
  842. extern UnitCloseup *find_unit_closeup(Unit *unit);
  843. extern void create_unit_closeup(Unit *unit);
  844. extern void preferred_closeup_size(int u, int *widp, int *hgtp);
  845. extern void draw_unit_closeup(UnitCloseup *unitcloseup);
  846. extern UnitCloseup *unit_closeup_from_window(WindowPtr win);
  847. extern int do_mouse_down_unit_closeup(UnitCloseup *unitcloseup, Point mouse, int mods);
  848. extern void destroy_unit_closeup(UnitCloseup *unitcloseup);
  849.  
  850. extern void create_history_window(void);
  851. extern void calc_history_layout(void);
  852. extern void update_total_hist_lines(void);
  853. extern void set_history_scrollbar(void);
  854. extern void draw_history(void);
  855. extern void draw_historical_event(HistEvent *hevt, int y);
  856. extern void draw_historical_date(HistEvent *hevt, int y);
  857. extern pascal void history_scroll_proc(ControlHandle control, short code);
  858. extern void do_mouse_down_history(Point mouse, int mods);
  859. extern void move_history_scrollbar(int h, int v);
  860. extern void grow_history(int h, int v);
  861. extern void zoom_history(int part);
  862. extern void update_history_window(HistEvent *hevt);
  863.  
  864. extern void help_dialog(void);
  865. extern void describe_menus(int arg, char *key, char *buf);
  866. extern void describe_mouse(int arg, char *key, char *buf);
  867. extern void describe_keyboard(int arg, char *key, char *buf);
  868. extern void describe_help(int arg, char *key, char *buf);
  869. extern void create_help_window(void);
  870. extern void set_help_content(HelpNode *curnode);
  871. extern void draw_help(void);
  872. extern void adjust_help_scrollbar(void);
  873. extern void activate_help(int activate);
  874. extern pascal void help_vscroll_proc(ControlHandle control, short code);
  875. extern void do_mouse_down_help(Point mouse, int mods);
  876. extern void grow_help(int h, int v);
  877. extern void zoom_help(int part);
  878.  
  879. extern void enable_designing(int forsure);
  880. extern void disable_designing(void);
  881. extern void init_design_cursors(void);
  882. extern CursPtr adjust_designer_cursor(Point mouse, RgnHandle region);
  883. extern void create_design_window(void);
  884. extern void position_design_window(void);
  885. extern void draw_design_window(void);
  886. extern void draw_design_window_tool(enum tooltype tool);
  887. extern void do_mouse_down_design(Point mouse, int mods);
  888. extern void mark_allowed_unit_types(void);
  889. extern void mark_allowed_sides(void);
  890. extern void feature_rename_dialog(Feature *feature);
  891. extern void apply_designer_tool(Map *map, int h, int v, int mods);
  892. extern void paint_on_drag(Map *map, int h0, int v0, int mods);
  893. extern void border_on_drag(Map *map, int h0, int v0, int mods, int paintmode);
  894. extern void connect_on_drag(Map *map, int h0, int v0, int mods, int paintmode);
  895. extern void designer_save_dialog(void);
  896. extern void designer_reshape_dialog(Module *module);
  897.  
  898. extern void update_unit_in_maps(Unit *unit);
  899. extern void beep(void);
  900. extern void set_game_file_type(char *name);
  901.